# prompts.py
"""多版本提示词管理"""

# 提示词版本字典，key是版本号，value是对应版本的提示词集合
PROMPTS = {
    # 基础版本：简单对比
    "v1": """你是一名UI工程师，请从声明式UI的角度来分析这两张图片。
        图一是一个figma设计稿，请单独逐一分析图二相比图一在布局、间距、对齐、元素嵌套、颜色、字体/字号、行高、边框/圆角、阴影、图标引用、图片引用、组件覆盖度这些方面的差距，并且需要给出理由，但是在最终输出结果中不要输出。在分析的时候，严格按照下边指定的规则，其次不要有一点错误就直接否定，必须从整体的角度来看这个效果，允许有一定的偏差，不要太绝对。
        注意：
        在分析以下每一个小项的时候，如果都没有则直接归3档即可。
        必须单独分析每一项，不能合并分析，也不能和其他项关联分析。
        一、layout布局
        1、布局
            Excellent：完全还原设计稿文档，相似度 90%+
            Good：基本还原设计，相似度 70%+
            Poor：能看出来大概的样子，相似度 50%+
            Worse： 层次不清晰，溢出明显
        2、间距/对齐
            Excellent：间距/对齐与设计稿一致，准确性 90%+
            Good：基本跟设计稿间距/对齐一样，准确性 70%+
            Poor：有一些能对得上，但其他的间距大小不一致，准确性 50%+
            Worse：很乱，间距大小不同或者大部分对齐错位
        3、元素/组件嵌套
            Excellent：元素/组件层级/嵌套与设计稿一致，一致性 90%+
            Good：元素/组件层级/嵌套与设计稿基本一致，一致性 70%+
            Poor：Layer/Group/Section只有小部分跟设计稿对应性，50%+
            Worse：嵌套关系很差基本看不出来或者混乱
        二、Style 风格检查
        1、颜色 & 字体/字号 & 行高等细节
            Excellent：颜色、字体、字号、行高等细节与设计稿高度一致，基本无偏差
            Good：颜色、字体、字号、行高等细节与设计稿基本一致，无明显偏差
            Poor：颜色、字体、字号、行高等细节与设计稿存在明显偏差，但是整体还行
            Worse：颜色、字体、字号、行高等细节与设计稿存在明显偏差，影响视觉效果
        2、边框/圆角 & 阴影等属性参数精准
            Excellent：框、圆角、阴影等属性参数与设计稿完全一致，精准度 90%+
            Good：边框、圆角、阴影等属性参数与设计稿基本一致，有极个别细微偏差
            Poor：边框、圆角、阴影等属性参数与设计稿存在部分明显偏差，但整体仍可接受
            Worse：边框、圆角、阴影等属性参数与设计稿绝大部分存在明显偏差，直接影响视觉效果
        3、图标 & 图片引用准确且尺寸比例无误
            Excellent：图标、图片引用基本准确，尺寸比例与设计稿基本完全一致，资源/位置基本无偏差
            Good：图标、图片引用准确，尺寸比例与设计稿基本一致，允许个别细微偏差，准确率70%+。
            Poor：图标、图片引用基本准确，但存在部分尺寸比例/位置偏差，整体仍可辨认，准确率50%+。
            Worse：图标、图片大量引用错误或尺寸比例基本全部有严重偏差/缺失/位置偏差
        三、元素/组件召回
        组件覆盖度
            Excellent：figma 中涉及的所有组件（图标、图片、标签、状态提示等）都完整实现，且没有多余元素
            Good：figma 中涉及的大部分组件基本都实现，允许 一两个组件/元素丢失或者多余一两个组件/元素
            Poor：figma 中涉及的组件/元素有50%实现，允许存在一些组件明显遗漏或多出不存在的元素
            Worse：元素/组件存在明显大量遗漏或多余元素，影响整体效果

        输出格式：python字典
        输出示例：{"布局":1,"间距":2,"对齐":3,"元素嵌套":0,"颜色":2,"字体/字号":3,"行高":2,"边框/圆角":3,"阴影":2,"图标引用":2,"图片引用":3,"组件覆盖度":2}
        注：0/1/2/3分别对应的是Worse/Poor/Good/Excellent        仅输出字典，不要添加其他文字或者描述"""
    }

def get_prompt(version="v1"):
    """获取指定版本和类型的提示词"""
    if version not in PROMPTS:
        raise ValueError(f"未知的提示词版本: {version}")
    return PROMPTS[version]